{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "rb5VSo4mNkVd"
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from torch import nn, Tensor\n",
    "from sklearn.datasets import make_moons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DiscreteFlow(nn.Module):\n",
    "    def __init__(self, dim: int = 2, h: int = 128, v: int = 128):\n",
    "        super().__init__()\n",
    "        self.v = v\n",
    "        self.embed = nn.Embedding(v, h)\n",
    "        self.net = nn.Sequential(\n",
    "            nn.Linear(dim * h + 1, h), nn.ELU(),\n",
    "            nn.Linear(h, h), nn.ELU(),\n",
    "            nn.Linear(h, h), nn.ELU(),\n",
    "            nn.Linear(h, dim * v))\n",
    "    \n",
    "    def forward(self, x_t: Tensor, t: Tensor) -> Tensor:\n",
    "        return self.net(torch.cat((t[:, None], self.embed(x_t).flatten(1, 2)), -1)).reshape(list(x_t.shape) + [self.v])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 256\n",
    "vocab_size = 128\n",
    "\n",
    "model = DiscreteFlow(v=vocab_size)\n",
    "optim = torch.optim.Adam(model.parameters(), lr=0.001) \n",
    "\n",
    "for _ in range(10000):\n",
    "    x_1 = Tensor(make_moons(batch_size, noise=0.05)[0])\n",
    "    x_1 = torch.round(torch.clip(x_1 * 35 + 50, min=0.0, max=vocab_size - 1)).long()\n",
    "    \n",
    "    x_0 = torch.randint(low=0, high=vocab_size, size=(batch_size, 2))\n",
    "\n",
    "    t = torch.rand(batch_size)\n",
    "    x_t = torch.where(torch.rand(batch_size, 2) <  t[:, None], x_1, x_0)\n",
    "\n",
    "    logits = model(x_t, t)\n",
    "    loss = nn.functional.cross_entropy(logits.flatten(0, 1), x_1.flatten(0, 1)).mean()\n",
    "    optim.zero_grad()\n",
    "    loss.backward()\n",
    "    optim.step()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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x0R4J0o+7N27F6dOncp53V7A8MMPP9Q4MsILUfLBpqysDBMnTsTYsWPRrVs3/OEPf0CfPn3w8Y9/3NMxEuqY9MEvIp/Wr1+Pzs7O2MW0aCS6T8rKygAAhw8fznrdS66hkSNHYvjw4Xjsscfw//1//x+6desGAHj00UdRUlKCz372s5nPHjlyBO+88w7OPvvsTA/RFVdcgdtvvx2LFy/G//2//xdA1/S6JUuW4JxzzsFFF13k61gJNaLkBJF/oubD3LlzsWzZMvzoRz9CU1OTn0MjPBAlH/bv388NfPz0pz9FSUlJZvolERxR8aGmpgYtLS0523/44Yfx8ssv48knn8yMSiKCIyo+APz64e2338bPfvYzfPSjHyUfQiBKPlxxxRW47bbb8Pjjj+NLX/oSSku7xmH95Cc/AQBceuml3g+UUCZKTticPHkSTz/9NCZNmoREIuH10AgPRMmHoUOH4rnnnsOqVaswZcqUzGeffPJJAEAymfR0jIQ6UfKBx5o1a7B8+XLcdNNNFKsIAZM+6PDee+8hnU6jqqoKVVVVAIBp06ahf//+ePTRR/HJT34y89lHH30UZ5xxRvzW2cnvuqbxZ+3atRYA65Of/KT1i1/8wnryySetd9991/P2fvOb31glJSXWtGnTrMcee8y69dZbrdLSUusrX/lK1ucef/xxC4D1+OOPZ73+ta99zQJg3XDDDdaPf/xj6/LLL7cAWE888YTnMhF6RM2JX/ziF9Z3v/td66677rIAWFOnTrW++93vWt/97netN954w3O5CDWi5MPChQstANbEiROtX/7ylzn//JSLUCNKPtx2223WuHHjrG984xvWY489Zi1YsMAaP368BcCaO3eu5zIR6kTJBx7XX3+9VVZW5rk8hB5R8uFLX/qSdfHFF1vf/va3rccee8z6+te/bp111llWz549rRdffNFzmQh1ouSDZVnWd77zHQuAdemll1qLFi2ybrjhBqukpMS6+uqrPZeJ0CNqTtjbAGAtWbLEczkIb0TJh61bt1plZWXWmWeead11113WkiVLrKuvvjpTZxDBEyUf3njjDWvChAnW9773PesnP/mJdfvtt1t9+vSxksmkdfToUc9lItQx7cPq1aszMaSamhpr0KBBmb9Xr16d+dyLL75oAbDuvvvurO8vWrTIAmB99rOftX784x9b1113nQXAuvfe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",
      "text/plain": [
       "<Figure size 1500x200 with 11 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_t = torch.randint(low=0, high=vocab_size, size=(200, 2))\n",
    "t = 0.0\n",
    "results = [(x_t, t)]\n",
    "while t < 1.0 - 1e-3:\n",
    "    p1 = torch.softmax(model(x_t, torch.ones(200) * t), dim=-1)\n",
    "    h = min(0.1, 1.0 - t)\n",
    "    one_hot_x_t = nn.functional.one_hot(x_t, vocab_size).float()\n",
    "    u = (p1 - one_hot_x_t) / (1.0 - t)\n",
    "    x_t = torch.distributions.Categorical(probs=one_hot_x_t + h * u).sample()\n",
    "    t += h\n",
    "    results.append((x_t, t))\n",
    "\n",
    "fig, axes = plt.subplots(1, len(results), figsize=(15, 2), sharex=True, sharey=True)\n",
    "\n",
    "for (x_t, t), ax in zip(results, axes):\n",
    "    ax.scatter(x_t.detach()[:, 0], x_t.detach()[:, 1], s=10)\n",
    "    ax.set_title(f't={t:.1f}')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [
    "g8QtNgs1-PlE",
    "wW3VMmrK2t2d",
    "_7aH8D0H3IJT"
   ],
   "name": "scalable_CNF.ipynb",
   "provenance": []
  },
  "gpuClass": "standard",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
